//package com.asset.modules.common.servcie;
//
//import com.aliyun.oss.OSSClient;
//import com.aliyun.oss.model.CopyObjectResult;
//import com.aliyun.oss.model.ObjectMetadata;
//import com.aliyun.oss.model.PutObjectRequest;
//import com.aliyun.oss.model.PutObjectResult;
//import com.asset.modules.common.exception.CustomException;
//import com.asset.modules.game.model.GamePicsMeta;
//import com.asset.modules.game.servcie.GamePicsMetaService;
//import com.asset.modules.common.utils.UUIDUtil;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//import org.springframework.util.StringUtils;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.annotation.Resource;
//import java.io.IOException;
//import java.io.InputStream;
//import java.net.URL;
//import java.util.Date;
//
//@Service
//@Transactional(rollbackFor = Exception.class)
//public class OssService {
//    private static final Logger logger = LoggerFactory.getLogger(OssService.class);
//
//    @Resource(name = "normalOss")
//    private OSSClient normalOssClient;
//
//    @Resource(name = "imageOss")
//    private OSSClient imageOssClient;
//
//    @Autowired
//    private GamePicsMetaService gamePicsMetaService;
////    private SnowflakeIdWorker snowflakeIdWorker;
//
//    /**
//     * 设置文件的大小(不超过20MB)
//     */
//    private static final Integer MAX_SIZE = 1024 * 1024 * 20;
//
//    public GamePicsMeta uploadGamePic2OSS(MultipartFile file, Long gameId){
//        String bucketName="asset";
//        String fileDir="game/"+gameId+"/pics/";
//        //获取原始文件名
//        String originalFilename = file.getOriginalFilename();
//        //获取文件后缀名
//        String extension = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
//        if(!".jpeg".equals(extension)
//                &&!".jpg".equals(extension)
//                &&!".bmp".equals(extension)
//                &&!".png".equals(extension)
//                &&!".gif".equals(extension)
//        ){
//            throw new CustomException("上传的图片不符合格式要求!");
//        }
//        //设置文件名
//        String fileName = UUIDUtil.getUUID(12)+extension;
//        String eTag= uploadImage2OSS(file,bucketName,fileDir,fileName);
//        //如果电子签名不为空,代表图片上传成功,开始记录元数据信息
//        if(!StringUtils.isEmpty(eTag)){
//            try{
//                GamePicsMeta gamePicsMeta = new GamePicsMeta();
//                gamePicsMeta.setGameId(gameId);
//                gamePicsMeta.setBucketName(bucketName);
//                gamePicsMeta.setPicOssDir(fileDir);
//                gamePicsMeta.setPicOssName(fileName);
//
//                gamePicsMetaService.save(gamePicsMeta);
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                System.out.println("!!!!!!!!!!!看一下内容，有没有更新!!!!!!!!!!!!!!!!");
//                return gamePicsMeta;
//            }catch (Exception e){
//                e.printStackTrace();
//                throw new CustomException("保存oss失败，请联系管理员!");
//            }
//        }else{
//            throw new CustomException("保存oss失败，请联系管理员!");
//        }
//    }
//
//    //生成oss文件访问路径
//    public String generateOssFileOssUrl(String bucketName,String filePath,String fileName){
//        String ossUrl = null;
//        //设置文件临时访问过期时间为1小时
//        Date expiration = new Date(new Date().getTime() + 3600 * 1000);
//        try{
//            String objectName = filePath+fileName;
//            URL url = normalOssClient.generatePresignedUrl(bucketName, objectName, expiration);
//            if(url!=null){
//                ossUrl = url.toString();
//            }
//        }
//        catch (Exception e){
//            logger.error("OSS文件临时访问路径生成错误!");
//        }
//        return ossUrl;
//    }
//
//    //上传公共区域图片
//    public String uploadPubPic(MultipartFile file,String ossRootPath){
//        String bucketName="asset-pub";
//        String fileDir=ossRootPath+"/";
//        //获取原始文件名
//        String originalFilename = file.getOriginalFilename();
//        //获取文件后缀名
//        String extension = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
//        if(!".jpeg".equals(extension)
//                &&!".jpg".equals(extension)
//                &&!".bmp".equals(extension)
//                &&!".png".equals(extension)
//                &&!".gif".equals(extension)
//        ){
//            throw new CustomException("上传的图片不符合格式要求!");
//        }
//        //设置文件名
//        String fileName = UUIDUtil.getUUID(12)+extension;
//        String eTag= uploadImage2OSS(file,bucketName,fileDir,fileName);
//        if(!StringUtils.isEmpty(eTag)){
//            try{
//                return fileName;
//            }catch (Exception e){
//                e.printStackTrace();
//                throw new CustomException("保存oss失败，请联系管理员!");
//            }
//        }else{
//            throw new CustomException("保存oss失败，请联系管理员!");
//        }
//    }
//
//
//    public String uploadImage2OSS(MultipartFile file,String bucketName,String fileDir,String fileName) {
//        String eTag=null;
//        //文件超过规定大小
//        if(file.getSize()>MAX_SIZE){
//            throw new CustomException("上传文件过大!");
//        }
//        InputStream inputStream = null;
//        try{
//            inputStream = file.getInputStream();
//            ObjectMetadata objectMetadata = new ObjectMetadata();
//            objectMetadata.setContentLength(inputStream.available());
//            objectMetadata.setCacheControl("no-cache");
//            objectMetadata.setHeader("Pragma", "no-cache");
//            objectMetadata.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));
//            objectMetadata.setContentDisposition("inline;filename=" + fileName);
//            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,fileDir+fileName,file.getInputStream(),objectMetadata);
//            PutObjectResult putResult =imageOssClient.putObject(putObjectRequest);
//            eTag=putResult.getETag();
//        }
//        catch (Exception e){
//            logger.error(e.getMessage());
//            throw new CustomException("上传文件时发生异常");
//        }
//        finally {
//            try {
//                if(inputStream!=null) {
//                    inputStream.close();
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//        return eTag;
//    }
//
//    public Boolean copy(String oldBucketName,String oldKey,String newBucketName,String newKey){
//        try{
//            // 拷贝文件。
//            CopyObjectResult result = imageOssClient.copyObject(oldBucketName, oldKey, newBucketName, newKey);
//            System.out.println("ETag: " + result.getETag() + " LastModified: " + result.getLastModified());
//            return true;
//        }catch (Exception e){
//            e.printStackTrace();
//            throw new CustomException("文件拷贝发生异常");
//        }
//    }
//
//    private String generateGamePicPath(MultipartFile file,Long gameId){
//        String filePath = null;
//
//        return filePath;
//    }
//
//    /**
//     * Description: 判断OSS服务文件上传时文件的contentType
//     *
//     * @param FilenameExtension 文件后缀
//     * @return String
//     */
//    public String getContentType(String FilenameExtension) {
//        if (FilenameExtension.equalsIgnoreCase(".bmp")) {
//            return "image/bmp";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".gif")) {
//            return "image/gif";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
//                FilenameExtension.equalsIgnoreCase(".jpg") ||
//                FilenameExtension.equalsIgnoreCase(".png")) {
//            return "image/jpeg";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".html")) {
//            return "text/html";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".txt")) {
//            return "text/plain";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".vsd")) {
//            return "application/vnd.visio";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".pptx") ||
//                FilenameExtension.equalsIgnoreCase(".ppt")) {
//            return "application/vnd.ms-powerpoint";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".docx") ||
//                FilenameExtension.equalsIgnoreCase(".doc")) {
//            return "application/msword";
//        }
//        if (FilenameExtension.equalsIgnoreCase(".xml")) {
//            return "text/xml";
//        }
//        return "image/jpeg";
//    }
//
//}
